AWS Cloud Practitioner Certification: Compute Modules

Client-Server Model

Deployment Models

You can think as deployment models as:

  • How can you integrate the cloud resources with the infrastructure of the client.

  • Cloud-based
    • Run all parts of the app in the cloud.
    • Migrate existing app entire to the cloud.
    • Design and build new apps in the cloud.
    • Use Cases:
      • The clients don’t need full control over the infrastructure and data.
      • The workloads can run entirely in the cloud.
  • On-premises (Private cloud)
    • The first approach is the clients provide the infrastructure and AWS provide the software layer. Case the clients want to run optimized apps and services instead of create legacy app.
    • The second approach is AWS literally provide real infrastructure to your site, but AWS still manages and updates it.
      • See AWS Outposts Family.
    • Think as the clients have their own running infrastructure and they want to increase their resources and software services, but they want to keep the physical servers in site.
    • The client BUY and MANAGE hardware. Handle power, cooling, networking, backups, and disaster recovery.
    • Use Cases:
      • Highly sensitive systems (e.g., certain government, finance, healthcare environments)
      • Legacy app tightly coupled to specific hardware.
  • Hybrid (AWS + On-Premise)
    • Think as the clients want to run some workloads in their own infrastructure and others in AWS cloud servers., and often connect them so they work together.
    • Use Cases:
      • Keep sensitive systems on-premise, and non-sensitive in the AWS servers.
      • Gradual cloud migration strategies.
      • Improved disaster recovery and backup options.
      • Seasonal workloads needing burst capacity.
      • Keeping regulated data on-prem while running analytics in AWS.

Benefits of using compute in the cloud

  • Buy, keep, and maintain physical servers can be expense. Using cloud computing resources you pay what you consume.
  • Flexibility:
    • You don’t care about keep the infrastructure updated.
    • You don’t need to add manually more resources if the apps need more.
  • Deploy apps to the customers quickly in any place with low latency.
  • The points before lead to scale your business.

AWS services to provide cloud computing

Amazon Elastic Compute Cloud (Amazon EC2)

  • It’s a virtual server with computing resources associated to it.

Types of Amazon EC2 instances

  • General purpose instances
    • Good balance between compute, memory, storage, and network resources.
    • Use cases:
      • App servers
      • Gaming servers
      • Backend servers for enterprise apps
      • Small and medium databases.
  • Compute optimized instances
    • Idead for high demanding CPUs apps.
    • Use cases:
      • High-performance web servers.
      • Compute intensive app servers.
      • Dedicated gaming servers.
      • Batch processing workloads.
  • Memory optimized instances
    • High RAM capacity instances.
    • Use cases:
      • Process large datasets.
      • Real time processing of a large amount of unstructured data.
  • Storage optimized instances
    • Designed for workloads that demands high, sequential read and write access to large datasets on local storage.
    • Use cases:
      • Data warehousing apps.
      • High frequency online transaction processing (OLTP) systems.
  • Accelerated computing instances
    • Use hardware accelerators, coprocessors, or GPUs to perform some functions more efficiently than is possible in software running on CPUs.
    • Use cases:
      • Graphic processing.
      • Floating-point calculations.
      • Data pattern matching.

Pricing

Main principle → PAY-AS-YOU-GO

  • On-demand:
    • The instance don’t stop until you stop it.
    • Pay only the compute time you use.
    • Ideal for short terms.
  • Reserved Instances:
    • You purchase a/a group of instances for 1-year or 3-year term.
    • There are 2 types:
      • Standard Reserved Instances: Good choice if you know:
        • Instance type.
        • Instance size.
        • The region to deploy the app.
      • Convertible Reserved Instances:
        • Good fit if you need to run the app in different Availability Zones or different instances types.
  • Spot Instances:
    • Ideal for workloads with flexible start and end times.
    • Used typically for background process without affecting the overall operations of your business.
    • Offer 90% discount of On-demand price.
  • Dedicated Hosts:
    • Most expensive option.
    • Physical servers with Amazon EC2 instances that are fully dedicated to your use.
  • EC2 Instance Saving Plan:
    • Provide a discount when you commit to make a hourly spend to an instance family and Region for a 1-year or 3-year term.

Scalability (Amazon EC2 Auto Scaling)

  • Amazon EC2 Auto Scaling provide scalability for Amazon EC2 instances. Think as increase the number of instances while you app need it.
  • You can use 2 approaches:
    • Dynamic scaling: Responds to changing demand.
    • Predictive scaling: Automatically schedules the right number of Amazon EC2 instances based on predicted demand.
  • You have to set the Auto Scaling Group. You set the following set up:
    • Minimum: Number of instances that need your app to run.
    • Desired: Number of instances that you want to use in your app.
    • Maximum: Number of instances that you reserve in case the app need more resources.

Elastic Load Balancing

  • Service that automatically distribute the incoming traffic across multiple resources such as Amazon EC2.
  • Amazon EC2 assigns instances - Elastic Load Balancing distributes to the assigned instances.

Messaging and Queuing

The apps can have two main architecture design:

  • Tightly coupled architecture.
    • When component A fail, component B also fail.
    • Think as all the app in a single project.
    • You don’t need to send messages to the app components through the infrastructure.
  • Loosely coupled architecture.
    • Think as microservices where each microservice has its own function.
    • So, if component A fail, component B don’t fail.
    • You need a message service to communicate the components.

There are 2 AWS services to send messages and handling queues.

  • Amazon SNS (Simple Queue Service)
    • It’s a publisher/subscriber service. More native way of send messages one side publish a message and the other side listen the message.
    • You can loss messages, because there isn’t a buffer between.
    • Use cases:
      • Web servers
      • AWS Lambda functions.
  • Amazon SQS (Simple Notification Service)
    • It’s a message queuing service.
    • You don’t loss messages because they wait in a buffer or queue.

Serverless and Containers Solutions

Serverless → Don’t care about managing the server

  • With Amazon EC2 you need:
    • Virtual server + Code + Manage the instance.
    • No native serverless approach.
  • With serverless approach you need only the Code part or only need to focus on the product not the infrastructure.

AWS Lambda

  • It’s a service that lets you run code without worrying about managing the infrastructure. (serverless approach)
  • How AWS Lambda work:

Containers

  • Amazon Elastic Container Service (Amazon ECS)
    • Management system that allow build, run and scale containerized apps on AWS.
  • Amazon Elastic Kubernetes Service (Amazon EKS)
    • Management system to orchestrate containers on AWS.
  • AWS Fargate
    • It’s a serverless compute engine for containers on Amazon ECS or Amazon EKS to run containerized apps without worrying about the server management or instance allocation.

Summary

  • Your business can choose from 3 deployment models options. In any case, you will end up using AWS services.
  • Depends of you business needs or the architecture of your apps you can use the CORE and add some necessary services.
  • If your business needs or app scale maybe you need to add more services.
  • If your business doesn’t need to worry about managing infrastructure, you can opt for a serverless approach.